/**
 * 版权所有 2009-2012山东新北洋信息技术股份有限公司
 * 保留所有权利。
 */
package com.linyaonan.leetcode.easy._168;

/**
 * 给定一个正整数，返回它在 Excel 表中相对应的列名称。
 *
 * 例如，
 *
 *     1 -> A
 *     2 -> B
 *     3 -> C
 *     ...
 *     26 -> Z
 *     27 -> AA
 *     28 -> AB
 *     ...
 *
 * @ProjectName: leetcode
 * @Package: com.linyaonan.leetcode.easy._168
 * @ClassName: ExcelSheetTitle
 * @Author: linyaonan
 * @Date: 2019/11/13 15:32
 */
public class ExcelSheetTitle {

    private static int NUM_26 = 26;

    public String convertToTitle(int n) {
        StringBuilder builder = new StringBuilder();
        while (n > NUM_26) {
            n--;
            int w = n % NUM_26;
            builder.append(getCharFromNum(w + 1));
            n = n / NUM_26;
        }
        builder.append(getCharFromNum(n));
        return builder.reverse().toString();
    }


    /**
     * 1 -> A
     * 2 -> B
     * ...
     *
     * 26 -> Z
     * @param num
     * @return
     */
    private char getCharFromNum(int num) {
        return (char)('A' + num - 1);
    }

}
